package com.zzyq.pc.web.user.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.zzyq.pc.web.user.model.User;

public interface UserMapper {
    /**
     * 新增一条用户信息
     */
    Integer insert(User user);

    /**
     * 根据账户查询出用户信息
     */
    User selectUserByAccount(Map<String, Object> map);

    /**
     * 根据ID查询出用户数据,带密码
     */
    User selectUserById(@Param("userId") Integer userId);

    /**
     * 根据ID更新密码
     */
    int updatePwd(@Param("userId") Integer userId, @Param("userPwd") String userPwd);

    /**
     * 根据ID修改一条用户信息
     */
    Integer update(User user);

    /**
     * 查询相同的用户列表
     */
    List<User> selectSameList(Map<String, Object> map);

    /**
     * 根据条件用户列表
     */
    List<User> selectAsList(Map<String, Object> map);

    /**
     * 根据用户ID删除用户
     * 
     * @param userId
     * @return
     */
    int deleteById(@Param("userId") Integer userId);

    /**
     * 根据团体ID删除团体下的所有用户信息
     * 
     * @param companyId
     *            团体ID
     */
    int deleteByComId(@Param("companyId") Integer companyId);

    /**
     * 根据部门ID删除部门下的所有用户信息
     * 
     * @param departId
     *            部门ID
     */
    int deleteByDepartId(@Param("departId") Integer departId);

    /**
     * 根据部门ID查询部门下的所有用户信息
     * 
     * @param departId
     *            部门ID
     */
    List<User> selectByDepartId(@Param("departId") Integer departId);

    /**
     * 查询报送的上级用户
     */
    List<User> selectForSubmit(Map<String, Object> map);
}